
#include <sys/time.h>
#include <signal.h>

#include <stdio.h>

/*
ITIMER_REAL 	: 以系統真實的時間來計算，觸發時會送出SIGALRM。
ITIMER_VIRTUAL	: 只計算process真正在執行的時間(在User Mode的處理)，觸發時會送出SIGVTALRM。
ITIMER_PROF		: 計算該process在User Mode與Kernel Mode的處理時間，觸發時送出SIGPROF。
*/

void fun_alarmcallback(int a)
{
    printf( "I am in fun_alarmcallback\n" );

	/*
	you can set it_value of "struct itimerval" to stop the timer 
	*/
}

int main()
{
    struct itimerval t = {0};
	
	/* bind SIGALRM & my_alarm_handler */
    signal( SIGALRM, fun_alarmcallback );

	/* set timer values */
    t.it_interval.tv_usec = 0;
    t.it_interval.tv_sec = 2;
    t.it_value.tv_usec = 0;
    t.it_value.tv_sec = 1;

	/* start timer */
    if( setitimer( ITIMER_REAL, &t, NULL) < 0 )
	{
        printf( "settimer error.\n" );
        return -1;
    }

    while(1)
	{
		
    }

    return 0;
}

